<?php
/**
 * Created by PhpStorm.
 * User: guokunsheng
 * Date: 2022/2/14
 * Time: 下午1:08
 */

namespace app\web\service;

use app\astro\controller\Planetpower;
use app\astro\controller\Signscore;
use app\common\lib\astrolog\Astrolog;
use app\common\lib\Natal;

/**
 * 星座卡片数据
 * Class AstroCard
 * @package app\web\service
 */
class AstroCard
{
    /**
     * 表面
     * @var string[]
     */
    protected $surfaces = [
        1 => '大大咧咧',// 白羊：勇敢的心
        2 => '扣扣搜搜',// 金牛：现实主义
        3 => '矛盾善变',// 双子：文武双全
        4 => '敏感多疑',// 巨蟹：死宅达人
        5 => '我行我素',// 狮子：真·最强王者
        6 => '挑剔啰嗦',// 处女：追求完美
        7 => '摇摆不定',// 天秤：恋爱圣手
        8 => '生性多疑',// 天蝎：绝对占有
        9 => '粗心马虎',// 射手：自由不羁
        10 => '墨守成规',// 摩羯：闷骚内敛
        11 => '叛逆突变',// 水瓶：外星生物
        12 => '多愁善感',// 双鱼：多愁善感
    ];

    /**
     * 实则
     * @var string[]
     */
    protected $inherent = [
        1 => '骁勇善战',// 白羊：简单率真
        2 => '温柔体贴',// 金牛：宠辱不惊
        3 => '聪明伶俐',// 双子：善变大咖
        4 => '温柔居家',// 巨蟹：敏感多情
        5 => '霸气十足',// 狮子：唯我独尊
        6 => '心细如发',// 处女：崇尚理性
        7 => '优雅大方',// 天秤：纠结拖延
        8 => '深谋远虑',// 天蝎：酸醋坛子
        9 => '乐观开朗',// 射手：放飞自我
        10 => '原则分明',// 摩羯：踏实刻苦
        11 => '奇思妙想',// 水瓶：追求真理
        12 => '善良浪漫',// 双鱼：世间皆苦
    ];

    /**
     * 恋爱观念
     * @var string[]
     */
    protected $love_concepts = [
        1 => ['世上男人千千万，惹毛老娘天天换。', '世上女人千千万，惹毛老子天天换。'],
        2 => '嘘寒问暖不如打笔巨款',
        3 => '喜欢一个人太累了，所以我要喜欢十个。',
        4 => '我只能中午和你聊天，因为怕你早晚会爱上我。',
        5 => '有些人一旦错过了 ，真的谢天谢地。',
        6 => '我想都不敢想，谁有这种福气和我处对象。',
        7 => '假如有一天你想哭 ，请打电话给我， 让我知道你也有今天',
        8 => ['为什么你老是遇到渣男， 好好反思一下，是不是因为自己太漂亮 ？', '为什么你总是遇见渣女，好好反思一下，是不是因为自己太帅了？'],
        9 => '我想跟你做朋友，你居然想跟我谈恋爱？',
        10 => '我不太喜欢表白，因为会显得手黑。',
        11 => '人活得好好的为什么要谈个恋爱来气自己！',
        12 => '不要总是对我忽冷忽热，我怕感冒。',
    ];

    /**
     * 必杀技
     * @var string[]
     */
    protected $skills = [
        1 => '与生俱来的自信，超凡脱俗的外貌，错过就是星探的损失。',
        2 => '极强赚钱能力和欲望，常常可以激发自身潜力，吃土？不存在的。',
        3 => '超强学习沟通能力，善于用丰富的词汇和广阔的视野赢得他人崇拜值。',
        4 => '良好的家庭教育造就超正三观，也常能在房地产投资领域捷报频传。',
        5 => '游乐场所终身白金卡持有者，兼职长期为爱走钢索。恋爱选我，超甜！',
        6 => '工作技能满分，劳模红旗手长期入围者，必要时可身兼数职。',
        7 => ['旺夫，旺合作伙伴，所以请你们抱紧我大腿。', '旺妻，旺合作伙伴，所以请你们抱紧我大腿。'],
        8 => '长期霸占偏财投资榜前列，福布斯榜单潜在入围者。',
        9 => '擅长或喜欢高尖端技术开发，尤其能在异国、异地事务中实现财务自由。',
        10 => '常在所处行业小有名气，日积月累方可威震一方。',
        11 => '社交牛逼症基因携带者，常在人际关系中拥有不可多得的高魅力值。',
        12 => '天选之子，咱就是说，有的人未必有什么必杀技，但就是劝你不要冒犯。',
    ];

    /**
     * 12星座缩写名称 2字
     * @var string[]
     */
    protected $sign_names = [
        1 => '白羊',
        2 => '金牛',
        3 => '双子',
        4 => '巨蟹',
        5 => '狮子',
        6 => '处女',
        7 => '天秤',
        8 => '天蝎',
        9 => '射手',
        10 => '摩羯',
        11 => '水瓶',
        12 => '双鱼',
    ];

    /**
     * 根据太阳星座显示2个关键词
     * @var string[][]
     */
    protected $keywords = [
        1 => ['战神', '足智多谋常胜军'],// '三分钟热度', '勇争第一'
        2 => ['美食探路者', '小棉袄'],// '小小美食家', '品味一直在线'
        3 => ['社交小能手', '辩论小天才'],// '古灵精怪小可爱', '像雾像雨又像风'
        4 => ['行走的暖宝宝', '家政达人'],// '情绪小雷达', '老母亲般的关怀'
        5 => ['霸总本总', '夜空中最亮的星'],// '面子工程创始人', '气场全开'
        6 => ['手工达人', '逻辑鬼才'],// '行走的ETC', '细节控'
        7 => ['外貌协会会长', '端水大师'],// '选择困难重灾区', '优雅永不过时'
        8 => ['宫斗戏编剧', '模范恋人'],// '眼光毒辣100%', '撂狠话一绝'
        9 => ['社牛患者', '天选幸运儿'],// '哲学家本家', '乐观豁达'
        10 => ['隐忍高手', '潜力股'],// '小小企业家', '像一个老父亲'
        11 => ['天外来客', '时尚icon'],// '火星移民', '疏远淡漠'
        12 => ['双商在线代表', '玛丽苏最佳编剧'],// '白日梦想家', '不求回报的爱'
    ];

    protected $recode;
    protected $planet_power;
    protected $natal_data;

    private function getBaseData()
    {
        if (empty($this->natal_data))
        {
            $this->natal_data = (new Natal())->getScoreAndText($this->recode);
        }
        if (empty($this->planet_power))
        {
            $this->planet_power = $this->getPlanetPowerData();
        }
    }

    /**
     * 获取星座卡片数据
     * @param $recode array 档案数据
     * @return array
     */
    public function getCardData($recode)
    {
        if (empty($this->recode))
        {
            $this->recode = $recode;
        }
        $this->getBaseData();

        $res = [
            'avatar' => $recode['avatar'],
            'name' => $this->getRecodeSignInfo(),
            'surface' => $this->surfaces[$this->planet_power['planet'][17]['in_sign_id']],
            'inherent' => $this->inherent[$this->planet_power['planet'][0]['in_sign_id']],
            'attr' => $this->getAttrData(),
            'power' => $this->getPowerData(),
            'love_concept' => $this->getLoveConceptData(),
            'skill' => $this->getUniqueSkillData(),
            'keyword' => $this->getKeywordData(),
        ];

        return $res;
    }

    /**
     * 获取 星座卡牌 数据 的 表面：xxx 与 实则：xxx
     * @param $recode
     * @return array
     */
    public function getSurfaceAndInherent($recode)
    {
        if (empty($this->recode))
        {
            $this->recode = $recode;
        }

        if (empty($this->planet_power))
        {
            $this->planet_power = $this->getPlanetPowerData();
        }

        return [
            'surface' => $this->surfaces[$this->planet_power['planet'][17]['in_sign_id']],
            'inherent' => $this->inherent[$this->planet_power['planet'][0]['in_sign_id']],
        ];
    }

    /**
     * 获取档案的日月升信息
     * @return string
     */
    protected function getRecodeSignInfo()
    {
        return '日' . $this->sign_names[$this->planet_power['planet'][0]['in_sign_id']] . '·月' . $this->sign_names[$this->planet_power['planet'][1]['in_sign_id']] . '·升' . $this->sign_names[$this->planet_power['planet'][17]['in_sign_id']];
    }

    /**
     * 获取行星能量数据
     * @return array
     */
    protected function getPlanetPowerData()
    {
        $settingData['natal'] = json_decode('{"planet":[[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[0,0],[0,0],[1,0],[0,0],[0,0],[0,0],[0,0],[1,0],[0,0],[0,0],[1,0]],"phase":{"0":[1,8],"60":[1,6],"90":[1,7],"120":[1,7],"180":[1,7],"45":[0,0],"135":[0,0],"30":[0,0],"150":[0,0],"72":[0,0],"144":[0,0]},"arabic":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"h_sys":"p","ecliptic":0,"firdaria":"default","profection_push_direction":0,"decanates":0,"bound_type":"default","ayanamsa":0}', true);

        $details = Astrolog::getInstance()
            ->setRecode1($this->recode)
            ->setExecPrefix(config('astrolog.prefix'))
            ->setIsAstrolabe(true)
            ->setUserSetting($settingData)
            ->setGetDatas(['natal'])
            ->getAstroDatas()
            ->getDatas('natal');

        $details['planets'] = json_decode(json_encode($details['planets']), true);
        $details['characteristic'] = json_decode(json_encode($details['characteristic']), true);

        $data = [
            'planet' => $details['planets'],
            'planet_power' => (new Planetpower($details))->_initload(),
        ];

        return $data;
    }

    /**
     * 获取星座卡片-属性分值
     * [1-50)   [50-100]
     * emo-haha：根据海王星能量（确认星级是否有具体数值）
     * 暴富-吃土：根据格局能力分-财富（改成100满分）
     * 孤寡-桃花：根据格局能力分-恋爱（改成100满分）
     * 熬夜-养生：根据火星能量（确认星级是否有具体数值）
     * 学渣-学霸：根据格局能力分-学业（改成100满分）
     * 本部分当用户分值低于40时（包括40），自动+10
     * @return array[]
     */
    protected function getAttrData()
    {
        $res = [
            ['id' => 0, 'low' => 'emo', 'high' => 'haha', 'score' => $this->planet_power['planet_power'][8]['lv'] * 20 + (int)($this->planet_power['planet_power'][8]['lucky'] / 50)],
            ['id' => 1, 'low' => '吃土', 'high' => '暴富', 'score' => (int)($this->natal_data['money'] / 5)],
            ['id' => 2, 'low' => '孤寡', 'high' => '桃花', 'score' => (int)($this->natal_data['love'] / 5)],
            ['id' => 3, 'low' => '熬夜', 'high' => '养身', 'score' => $this->planet_power['planet_power'][4]['lv'] * 20 + (int)($this->planet_power['planet_power'][4]['lucky'] / 50)],
            ['id' => 4, 'low' => '学渣', 'high' => '学霸', 'score' => (int)($this->natal_data['study'] / 5)],
        ];

        foreach ($res as $k => $v)
        {
            if ($v['id'] === 4 && $v['score'] < 50)
            {
                $v['score'] += 20;
            }
            if ($v['score'] <= 40)
            {
                $v['score'] += 10;
            } else if ($v['score'] > 100)
            {
                $v['score'] = 100;
            }
            $res[$k] = $v;
        }

        return $res;
    }

    /**
     * 获取星座卡片-能力指数
     * 暴力指数：根据火星能量
     * 魅力指数：根据金星能量
     * 潜力指数：根据木星能量
     */
    protected function getPowerData()
    {
        $res = [
            ['id' => 0, 'name' => '暴力指数', 'score' => $this->planet_power['planet_power'][4]['lv'] * 20 + (int)($this->planet_power['planet_power'][4]['lucky'] / 50)],
            ['id' => 1, 'name' => '魅力指数', 'score' => $this->planet_power['planet_power'][3]['lv'] * 20 + (int)($this->planet_power['planet_power'][3]['lucky'] / 50)],
            ['id' => 2, 'name' => '潜力指数', 'score' => $this->planet_power['planet_power'][5]['lv'] * 20 + (int)($this->planet_power['planet_power'][5]['lucky'] / 50)],
        ];

        foreach ($res as $k => $v)
        {
            if ($v['id'] > 0 && $v['score'] < 70)
            {
                $v['score'] += 20;
            }
            if ($v['score'] < 1)
            {
                $v['score'] = 1;
            } else if ($v['score'] > 100)
            {
                $v['score'] = 100;
            }
            $res[$k] = $v;
        }

        return $res;
    }

    /**
     * 获取星座卡片-恋爱观念
     * 根据太阳星座固定
     * @return string
     */
    protected function getLoveConceptData(): string
    {
        $sexIndex = $this->recode['type'] * 1 === 1 ? 1 : 0;
        $res = $this->love_concepts[$this->planet_power['planet'][0]['in_sign_id']] ?? '未知';
        if (is_array($res))
        {
            $res = $res[$sexIndex];
        }
        return $res;
    }

    /**
     * 获取星座卡片-必杀技
     * 根据木星落在几宫决定固定词条
     * @param array $recode
     * @return string
     */
    public function getUniqueSkillData($recode = []): string
    {
        if (!empty($recode))
        {
            $this->recode = $recode;
            $this->getBaseData();
        }
        $sexIndex = $this->recode['type'] * 1 === 1 ? 1 : 0;
        $res = $this->skills[$this->planet_power['planet'][5]['in_house_id']] ?? '未知';
        if (is_array($res))
        {
            $res = $res[$sexIndex];
        }
        return $res;
    }

    /**
     * 获取星座卡片-关键词
     * @return array|string
     */
    protected function getKeywordData()
    {
        return $this->keywords[$this->planet_power['planet'][0]['in_sign_id']] ?? [];
    }

    /**
     * 获取四象卡片相关数据
     *  元素占比、元素特征、待加强（缺失的元素）
     *  风火水土占比
     *  风火水土的特征
     * @param array $recode 档案信息
     * @return array
     */
    public function getElementData(array $recode): array
    {
        // 计算日月水金火升落座的元素占比
        $setting = [
            'natal' => json_decode('{"planet":[[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[0,0],[0,0],[1,0],[0,0],[0,0],[0,0],[0,0],[1,0],[0,0],[0,0],[1,0]],"phase":{"0":[1,8],"60":[1,6],"90":[1,7],"120":[1,7],"180":[1,7],"45":[0,0],"135":[0,0],"30":[0,0],"150":[0,0],"72":[0,0],"144":[0,0]},"arabic":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"h_sys":"p","ecliptic":0,"firdaria":"default","profection_push_direction":0,"decanates":0,"bound_type":"default","ayanamsa":0}', true),
        ];
        $astroData = Astrolog::getInstance()
            ->setRecode1($recode)
            ->setExecPrefix(config('astrolog.prefix'))
            ->setIsAstrolabe(false)
            ->setUserSetting($setting)
            ->setGetDatas(['natal'])
            ->getAstroDatas()
            ->getDatas('natal');
        $signs = [];
        $signs[] = $astroData['planets'][0]['in_sign_id'];
        $signs[] = $astroData['planets'][1]['in_sign_id'];
        $signs[] = $astroData['planets'][2]['in_sign_id'];
        $signs[] = $astroData['planets'][3]['in_sign_id'];
        $signs[] = $astroData['planets'][4]['in_sign_id'];
        $signs[] = $astroData['planets'][ASC]['in_sign_id'];
        $elems = [
            0 => ['score' => 0, 'name' => '水'],
            1 => ['score' => 0, 'name' => '火'],
            2 => ['score' => 0, 'name' => '土'],
            3 => ['score' => 0, 'name' => '风'],
        ];
        foreach ($signs as $v)
        {
            $type = $v % 4;
            $elems[$type]['score']++;
        }
        $sum = count($signs);
        $res = [
            'topic' => '', // 总结语
            'elem_charac' => [], // 元素特征
            'need_enhance' => [], // 待加强
        ];
        $signList = [
            0 => '巨蟹、天蝎、双鱼',
            1 => '白羊、狮子、射手',
            2 => '金牛、处女、摩羯',
            3 => '双子、天秤、水瓶',
        ];
        $textList = [
            // 水
            0 => [
                10 => '有点一板一眼',
                20 => '原谅我不懂你的心',
                30 => '三分善解人意，七分不解风情',
                40 => '比起与你共情，我更擅长分析利弊',
                50 => '感性与理性兼具',
                60 => '逻辑思维在线，更擅长抚慰人心',
                70 => '情商超高，情感沟通表达力一流',
                80 => '如沐春风，不知不觉入你心',
                90 => '深情大师，仅保留一分理智',
                100 => '共情高手，读心大师',
            ],
            // 火
            1 => [
                10 => '缺乏冲劲，安于稳定',
                20 => '总要别人push才能动',
                30 => '想法在脑子里不在手上',
                40 => '能够带动他人，活力满满',
                50 => '活力充沛、热情乐观',
                60 => '勇于突破、行动力超强',
                70 => '爱冒险、爱突破、超勇敢',
                80 => '耀眼夺目，有影响他人的能力',
                90 => '冒险家，热爱人生和生命',
                100 => '生命力极强，小太阳本体',
            ],
            // 土
            2 => [
                10 => '稳重内敛是代名词',
                20 => '不太稳定，容易动摇',
                30 => '考虑现实，不轻举妄动',
                40 => '一步一个脚印，有规划有秩序',
                50 => '满满的安全感和踏实感',
                60 => '让人不由自主地想要依靠',
                70 => '顾全大局，沉稳靠谱',
                80 => '情绪稳定，忍耐力爆表',
                90 => '理性王者，心思细腻',
                100 => '一切都在我的掌控之中！',
            ],
            // 风
            3 => [
                10 => '思想古板，缺乏变通力',
                20 => '思绪缓慢，内心os：容我再仔细想一想！',
                30 => '想法虽多，但很多时候只停留在脑子里',
                40 => '思维时而在线时而掉线',
                50 => '用不完的小聪明',
                60 => '脑子转的飞快',
                70 => '小妙招输出机',
                80 => '思维跳跃，机智敏锐',
                90 => '适应力高手，天生叛逆',
                100 => '人生字典里没有解决不了的难题',
            ],
        ];
        $totalPerc = 0;
        foreach ($elems as $k1 => $v1)
        {
            $perc = round($v1['score'] / $sum * 100, 0); // 占比
            $totalPerc += $perc;
            // 避免总和超过100%
            if ($totalPerc > 100)
            {
                $perc -= ($totalPerc - 100);
                $totalPerc = 100;
            }
            $text = '';
            if ($perc <= 0)
            {
                // 如果缺失该元素
                $text = $signList[$k1];
                $res['need_enhance'][] = [
                    'elem' => $v1['name'],
                    'perc' => $perc,
                    'text' => $text,
                ];
            } else
            {
                foreach ($textList[$k1] as $k2 => $v2)
                {
                    if ($perc <= $k2)
                    {
                        $text = $v2; // 词条
                        break;
                    }
                }
                $res['elem_charac'][] = [
                    'elem' => $v1['name'],
                    'perc' => $perc,
                    'text' => $text,
                ];
            }
        }
        // 1、以太阳星座为基调，定盘主为x象人。
        // 2、选取盘主元素占比最多的两个元素，输出词条。
        // 3、结构为：第一种：既xxxx（某元素）又xxxx（某元素）的x象人。  第二种：xxxxx的x象人
        $zjTextList = [
            '火' => [
                '火' => '积极勇敢、乐观坚强',
                '土' => '乐观勇敢又脚踏实地',
                '风' => '热情奔放又自由洒脱',
                '水' => '自信坚强又敏感包容',
            ],
            '土' => [
                '火' => '追求稳定又热情洋溢',
                '土' => '沉稳务实、内敛含蓄',
                '风' => '可靠坚毅又崇尚自由',
                '水' => '脚踏实地又善解人意',
            ],
            '风' => [
                '火' => '追求自由又勇敢乐观',
                '土' => '理性务实又适应力强',
                '风' => '聪明机灵、随机应变',
                '水' => '善于变通又感知力强',
            ],
            '水' => [
                '火' => '敏感爆表又乐观积极',
                '土' => '第六感强又稳重踏实',
                '风' => '情商智商双双在线',
                '水' => '感知力强、悟性超高',
            ],
        ];
        $baseElem = $signs[0] % 4;
        $zj = $elems[$baseElem]['name'] . '象人'; // 总结语
        if (count($res['elem_charac']) >= 2)
        {
            // 第一种：既xxxx（某元素）又xxxx（某元素）的x象人
            $res['elem_charac'] = resort($res['elem_charac'], 'perc', 'DESC');
            $other = [];
            foreach ($res['elem_charac'] as $k3 => $v3)
            {
                // 只取前二
                if (count($other) >= 2) break;
                $other[] = $v3['elem'];
            }
            if (count($other) === 2)
            {
                $res['topic'] = ['既' . $zjTextList[$other[0]][$other[1]], $zj];
            } else
            {
                $res['topic'] = [$zjTextList[$other[0]][$other[1]], $zj];
            }
        } else
        {
            // 第二种：xxxxx的x象人
//            $res['topic'] = [$zjTextList[$baseElem][$baseElem], $zj];
            $name = $elems[$baseElem]['name'];
            $res['topic'] = [$zjTextList[$name][$name], $zj];
        }
        return $res;
    }

    /**
     * 获取使用说明书相关数据
     *  主要成分词条、副作用、不可预测的反应（怪癖）
     * @param array $recode 档案信息
     */
    public function getInstructionData(array $recode)
    {
        $res = [];
        $setting = [
            'natal' => json_decode('{"planet":[[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[0,0],[0,0],[1,0],[0,0],[0,0],[0,0],[0,0],[1,0],[0,0],[0,0],[1,0]],"phase":{"0":[1,8],"60":[1,6],"90":[1,7],"120":[1,7],"180":[1,7],"45":[0,0],"135":[0,0],"30":[0,0],"150":[0,0],"72":[0,0],"144":[0,0]},"arabic":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"h_sys":"p","ecliptic":0,"firdaria":"default","profection_push_direction":0,"decanates":0,"bound_type":"default","ayanamsa":0}', true),
        ];
        $astroData = Astrolog::getInstance()
            ->setRecode1($recode)
            ->setExecPrefix(config('astrolog.prefix'))
            ->setIsAstrolabe(false)
            ->setUserSetting($setting)
            ->setGetDatas(['natal'])
            ->getAstroDatas()
            ->getDatas('natal');

        $SignscoreModel = new Signscore($astroData);
        $signScore = $SignscoreModel->_initload(0);
        $inSignNames = [
            1 => '白羊座',
            2 => '金牛座',
            3 => '双子座',
            4 => '巨蟹座',
            5 => '狮子座',
            6 => '处女座',
            7 => '天秤座',
            8 => '天蝎座',
            9 => '射手座',
            10 => '摩羯座',
            11 => '水瓶座',
            12 => '双鱼座',
        ];
        // 主要成分词条
        $res['sign_score'] = [];
        $percTextList = [
            1 => [
                10 => '好奇心、喜刺激、重情义MAX',
                20 => '萌萌哒、爱冒险、积极心MAX',
                30 => '情绪化、傻白甜、热情力MAX',
                40 => '冲动派、天然呆、战斗力MAX',
                50 => '小叛逆、性子急、雷厉风行MAX',
                60 => '孩子王、竞争心、冒险力MAX',
                70 => '耿直boy/girl、急性子、爆发力MAX',
                80 => '显眼包、胆大包天、执行力MAX',
                90 => '行动派、小霸王、勇敢力MAX',
                100 => '超高效、战斗机、小宇宙MAX',
            ],
            2 => [
                10 => '小迷糊、慢悠悠、实用主义MAX',
                20 => '小顽固、温和感、超忠诚MAX',
                30 => '享乐家、小闷骚、占有欲MAX',
                40 => '小倔强、懒洋洋、感官力MAX',
                50 => '审美在线、慢热选手、稳定感MAX',
                60 => '爱冷战、感官敏锐、执着力MAX',
                70 => '小财迷、务实派、牛角尖MAX',
                80 => '慢热怪、品味一流、责任心MAX',
                90 => '金钱至上、特靠谱、隐忍力MAX',
                100 => '理性派、商业鬼才、史上最倔MAX',
            ],
            3 => [
                10 => '小幽默、爱好多、好奇心MAX',
                20 => '随机应变、信息收集站、新鲜感MAX',
                30 => '变脸高手、开心果、语言天赋MAX',
                40 => '三心二意、吃瓜选手、技能点MAX',
                50 => '阴晴不定、小逗比、灵感力MAX',
                60 => '多动症、暖场王、伪装力MAX',
                70 => '闲不住、搞笑达人、自嗨高手MAX',
                80 => '气氛担当、八卦制造者、学习力MAX',
                90 => '话题王、反应神速、高智商MAX',
                100 => '演说家、多重人格、超能力MAX',
            ],
            4 => [
                10 => '小透明、隐身侠、好奇心 MAX',
                20 => '沙发葛、懒洋洋、探索欲 MAX',
                30 => '暖宝宝、宅星人、情感泛滥 MAX',
                40 => '情绪包、超敏感、创意脑洞 MAX',
                50 => '怀旧控、守护者、回忆脑 MAX',
                60 => '温情侠、小恋家、顾家能手 MAX',
                70 => '脑洞帝、内耗王、耐心大师 MAX',
                80 => '护短狂、黏人精、护短担当 MAX',
                90 => '情绪怪、共情师、情感疗愈 MAX',
                100 => '能量王者、情绪主宰、超感力 MAX',
            ],
            5 => [
                10 => '慵懒王、爱面子、傲娇度 MAX',
                20 => '潦草小狗、乐天派、引潮流 MAX',
                30 => '炸药包、撩人精、热情值 MAX',
                40 => '拽炸天、表演家、慷慨度 MAX',
                50 => '主见强、炫耀王、活力值 MAX',
                60 => '买单王、风向标、领导力 MAX',
                70 => '闪耀星、人情王、自信心 MAX',
                80 => '霸总范、满格电、火药味儿 MAX',
                90 => '炸街王、超燃魂、魅力全开 MAX',
                100 => '超无敌、王者之风、能量巅峰 MAX',
            ],
            6 => [
                10 => '小谨慎、冷静派、淡定心 MAX',
                20 => '细节控、微洁癖、求知欲 MAX',
                30 => '挑剔帝、细节控、犀利点评 MAX',
                40 => '叨叨侠、强迫症、细节侦探 MAX',
                50 => '分析狂、辩论家、逻辑大师 MAX',
                60 => '碎碎念、完美侠、规划达人 MAX',
                70 => '卫生大使、毒舌精、严格要求 MAX',
                80 => '吐槽官、靠谱君、毒舌幽默 MAX',
                90 => '超精细、现实唐僧、自律狂魔 MAX',
                100 => '智多星、完美家、极致主义 MAX',
            ],
            7 => [
                10 => '冷幽默、举止优雅、善倾听MAX',
                20 => '内心戏、老好人、爱社交MAX',
                30 => '重和谐、有魅力、亲和力MAX',
                40 => '圆滑精、高审美、风度翩翩MAX',
                50 => '文艺青年、纠结帝、社交能手MAX',
                60 => '和事佬、被动咖、广结善缘MAX',
                70 => '不倒翁、浪漫大使、社交力MAX',
                80 => '鉴赏家、明星范儿、平衡力MAX',
                90 => '事件判官、魅力超群、社交王者MAX',
                100 => '外交官、极致优雅、人群C位MAX',
            ],
            8 => [
                10 => '隐私控、小敏锐、坚定感MAX',
                20 => '思想者、小腹黑、洞察力MAX',
                30 => '用情深、犀利侠、勇敢力MAX',
                40 => '掌控欲、小神秘、直觉力MAX',
                50 => '小冷酷、试探狂、情绪化MAX',
                60 => '深情种、神算子、执着力MAX',
                70 => '神秘十足、敢爱敢恨、火眼金睛MAX',
                80 => '气场全开、非黑即白、洞察力MAX',
                90 => '阴阳师、十万伏特、性张力MAX',
                100 => '帝王范儿、复仇者、敏锐王者MAX',
            ],
            9 => [
                10 => '爱自由、小聪明、乐观派MAX',
                20 => '无拘无束、孩子气、坦荡荡MAX',
                30 => '小逍遥、理想主义、热心肠MAX',
                40 => '天马行空、爱自由、博爱精神MAX',
                50 => '思维在线、有远见、豁达心MAX',
                60 => '勇敢无畏、得瑟鬼、求知欲MAX',
                70 => '诸葛亮、超勇敢、大胸怀MAX',
                80 => '学习王者、探险家、包容心MAX',
                90 => '天道导师、哲学家、无拘无束MAX',
                100 => '百科全书、冒险王、精神领袖MAX',
            ],
            10 => [
                10 => '老黄牛 计划大师 果断力MAX',
                20 => '有点挑剔 循规蹈矩 逻辑力MAX',
                30 => '孤独成瘾 人间清醒 冷静力MAX',
                40 => '劳模人 “慢”步者 强迫症MAX',
                50 => '强迫症 逻辑机器 忽冷忽热MAX',
                60 => '规矩怪 敬业典范 责任感MAX',
                70 => '工作狂 自律狂魔 死要面子MAX',
                80 => '极品人机 已读不回 性格稳定MAX',
                90 => '闷骚鼻祖 身体诚实 幕后大佬MAX',
                100 => '马拉松选手 天生伟人 理性王者MAX',
            ],
            11 => [
                10 => '想得开 拎得清 双赢思维MAX',
                20 => '脑补大王 竞选者 间歇断网MAX',
                30 => '嘴硬心软 人间清醒 深井冰MAX',
                40 => '古灵精怪 绿茶克星 理智力MAX',
                50 => '神逻辑 流浪侠客 高标准MAX',
                60 => '怪咖王 慢性子 双商在线MAX',
                70 => '冷战高手 人间清醒 稳准狠MAX',
                80 => '天生反骨 赛博朋克 高冷派MAX',
                90 => '冷若冰霜 扑克脸 感觉至上MAX',
                100 => '宇宙间谍 外星人 擅长独处MAX',
            ],
            12 => [
                10 => '恋旧王  感觉至上 共情力MAX',
                20 => '很佛系 情感丰富 忽冷忽热MAX',
                30 => '纯爱战神 脸乖心野 包容力MAX',
                40 => '反差感 洞察人心 浪漫力MAX',
                50 => '小迷糊 双标大师 柔和力MAX',
                60 => '可爱狂魔 天生海王 同理心MAX',
                70 => '嘤嘤怪 罗曼蒂克 慈悲心MAX',
                80 => '乐于助人 戏精体质 白日梦想家MAX',
                90 => '梦幻使者  情感导师 七十二变MAX',
                100 => '天生演员 爱心泛滥 第六感MAX',
            ],
        ];
        $totalPerc = 0;
        foreach ($signScore as $k1 => $v1)
        {
            $signId = $v1['id'];
            $perc = round($v1['percent'] * 100, 0);
            $totalPerc += $perc;
            if ($totalPerc > 100)
            {
                $perc -= ($totalPerc - 100);
            }
            $text = '';
            foreach ($percTextList[$signId] as $k2 => $v2)
            {
                if ($perc <= $k2)
                {
                    $text = $v2;
                    break;
                }
            }
            $res['sign_score'][] = [
                'name' => $inSignNames[$signId] . ' ' . $perc . '%',
                'text' => $text,
            ];
        }

        // 副作用 遇到同样权重的  随机取其一
        $res['side_effect'] = [];
        // 副作用 - 事业 参考盘主天顶落座
        $sideEffectText1 = [
            ['type' => 'pis', 'pid' => MC, 'sign' => 1, 'text' => '摔杯为号就是干，撞了南墙也不回头', 'sort' => 1],
            ['type' => 'pis', 'pid' => MC, 'sign' => 2, 'text' => '重度拖延症患者，能不动就不动', 'sort' => 1],
            ['type' => 'pis', 'pid' => MC, 'sign' => 3, 'text' => '著名退堂鼓艺术家，擅长半途而废', 'sort' => 1],
            ['type' => 'pis', 'pid' => MC, 'sign' => 4, 'text' => '感情用事的当代纣王，没事就想烽火戏诸侯', 'sort' => 1],
            ['type' => 'pis', 'pid' => MC, 'sign' => 5, 'text' => '我不要你觉得，我要我觉得', 'sort' => 1],
            ['type' => 'pis', 'pid' => MC, 'sign' => 6, 'text' => '工作中的细节控，擅长逼疯身边人', 'sort' => 1],
            ['type' => 'pis', 'pid' => MC, 'sign' => 7, 'text' => '别吵，我在思考（纠结）', 'sort' => 1],
            ['type' => 'pis', 'pid' => MC, 'sign' => 8, 'text' => '腹黑王者记仇中', 'sort' => 1],
            ['type' => 'pis', 'pid' => MC, 'sign' => 9, 'text' => '就这样都可以，创意嘛就是随便出一版', 'sort' => 1],
            ['type' => 'pis', 'pid' => MC, 'sign' => 10, 'text' => '极品卷王已上线', 'sort' => 1],
            ['type' => 'pis', 'pid' => MC, 'sign' => 11, 'text' => '去你的形式主义，老子就不守规矩', 'sort' => 1],
            ['type' => 'pis', 'pid' => MC, 'sign' => 12, 'text' => '内耗十级选手，戏多想法多', 'sort' => 1],
        ];
        $res['side_effect'][] = [
            'name' => '事业',
            'text' => $this->getLogicText($astroData, $sideEffectText1),
        ];
        // 副作用 - 学业 参考盘主水星落座、3宫宫内部分行星
        $sideEffectText2 = [
            // 水星落座 排序数字越小，优先级越高
            ['type' => 'pis', 'pid' => 2, 'sign' => 1, 'text' => '热情如火学一阵，没趣就想换方向。', 'sort' => 5],
            ['type' => 'pis', 'pid' => 2, 'sign' => 2, 'text' => '老牛走慢道，一旦觉得知识不 “实惠”，脑袋就不想动。', 'sort' => 5],
            ['type' => 'pis', 'pid' => 2, 'sign' => 3, 'text' => '学了就忘，忘了还学', 'sort' => 5],
            ['type' => 'pis', 'pid' => 2, 'sign' => 4, 'text' => '一有情绪波动就分心', 'sort' => 5],
            ['type' => 'pis', 'pid' => 2, 'sign' => 5, 'text' => '被夸才能学得好', 'sort' => 5],
            ['type' => 'pis', 'pid' => 2, 'sign' => 6, 'text' => '拿放大镜找错误，只顾细节不顾整体', 'sort' => 5],
            ['type' => 'pis', 'pid' => 2, 'sign' => 7, 'text' => '这个选项对，那个也很对，做选择题太难啦！', 'sort' => 5],
            ['type' => 'pis', 'pid' => 2, 'sign' => 8, 'text' => '一遇到难题就进到死胡同', 'sort' => 5],
            ['type' => 'pis', 'pid' => 2, 'sign' => 9, 'text' => '还没开始行动，就脑补了无数种结局', 'sort' => 5],
            ['type' => 'pis', 'pid' => 2, 'sign' => 10, 'text' => '老黄牛拉重车，就是不拐弯', 'sort' => 5],
            ['type' => 'pis', 'pid' => 2, 'sign' => 11, 'text' => '不切实际不落地，我就三秒钟记忆', 'sort' => 5],
            ['type' => 'pis', 'pid' => 2, 'sign' => 12, 'text' => '唉？你刚刚说啥来的，你再重复一遍呗', 'sort' => 5],
            // 3宫宫内星
            ['type' => 'pih', 'pid' => 7, 'house' => 3, 'text' => '特立独行，不好玩的我不学', 'sort' => 1],
            ['type' => 'pih', 'pid' => 8, 'house' => 3, 'text' => '一考试就迷糊，全靠灵感撑着', 'sort' => 1],
            ['type' => 'pih', 'pid' => 9, 'house' => 3, 'text' => '要么学得特别好，要么特别能摆烂', 'sort' => 1],
            ['type' => 'pih', 'pid' => 5, 'house' => 3, 'text' => '一有点小成绩就得意，容易盲目自信', 'sort' => 2],
            ['type' => 'pih', 'pid' => 6, 'house' => 3, 'text' => '还没开始学就怕犯错', 'sort' => 2],
            ['type' => 'pih', 'pid' => 0, 'house' => 3, 'text' => '极度重视话语权，不听我的我就不学', 'sort' => 3],
            ['type' => 'pih', 'pid' => 1, 'house' => 3, 'text' => '学着学着就给自己学emo了', 'sort' => 3],
            ['type' => 'pih', 'pid' => 2, 'house' => 3, 'text' => '没主见，别人说的好像都有道理', 'sort' => 4],
            ['type' => 'pih', 'pid' => 4, 'house' => 3, 'text' => '学习根本没耐心，学着学着就给自己学急了', 'sort' => 4],
        ];
        $res['side_effect'][] = [
            'name' => '学业',
            'text' => $this->getLogicText($astroData, $sideEffectText2),
        ];
        // 副作用 - 友情 参考盘主11宫宫主星、11宫宫内部分行星
        $sideEffectText3 = [
            // 11宫宫主星(也就是宫头落座)  排序数字越小，优先级越高
            ['type' => 'his', 'house' => 11, 'sign' => 1, 'text' => '太过相信他人，人际关系难长久。', 'sort' => 7],
            ['type' => 'his', 'house' => 11, 'sign' => 2, 'text' => '身边围绕太多利益关系，唉，奈何我也想要懂我的知己。', 'sort' => 7],
            ['type' => 'his', 'house' => 11, 'sign' => 3, 'text' => '容易卷入到复杂的人际关系中，被身边人视为移动的“靶子”。', 'sort' => 7],
            ['type' => 'his', 'house' => 11, 'sign' => 4, 'text' => '太过念旧，容易被有心人打感情牌，拿不起放不下。', 'sort' => 7],
            ['type' => 'his', 'house' => 11, 'sign' => 5, 'text' => '和我交朋友，你还需要学会哄一头小狮子！', 'sort' => 7],
            ['type' => 'his', 'house' => 11, 'sign' => 6, 'text' => '想当我朋友？你需要通过我的完美标准考验！', 'sort' => 7],
            ['type' => 'his', 'house' => 11, 'sign' => 7, 'text' => '太过“和事佬”，结果两边都得罪。', 'sort' => 7],
            ['type' => 'his', 'house' => 11, 'sign' => 8, 'text' => '认定的朋友能掏心掏肺，但如果你敢骗我…哼，等着一起玩完吧！', 'sort' => 7],
            ['type' => 'his', 'house' => 11, 'sign' => 9, 'text' => '都怪我心太大，在要离开时才发觉你是我最好的朋友。', 'sort' => 7],
            ['type' => 'his', 'house' => 11, 'sign' => 10, 'text' => '我难道真是冷场王？朋友感觉有时我太过"正经"。', 'sort' => 7],
            ['type' => 'his', 'house' => 11, 'sign' => 11, 'text' => '喜欢和“怪人”玩，但有时无视常规反而会让朋友觉得我怪怪的。', 'sort' => 7],
            ['type' => 'his', 'house' => 11, 'sign' => 12, 'text' => '不懂拒绝，总会迷失在朋友圈的迷宫里。', 'sort' => 7],
            // 11宫宫内部分行星  排序数字越小，优先级越高
            ['type' => 'pih', 'pid' => 9, 'house' => 11, 'text' => '人际关系有执念，容易遇到对自己不利的小人。', 'sort' => 1],
            ['type' => 'pih', 'pid' => 6, 'house' => 11, 'text' => '人际关系有压力，人一多秒变社恐。', 'sort' => 2],
            ['type' => 'pih', 'pid' => 7, 'house' => 11, 'text' => '社交圈容易变动，常常被迫站队。', 'sort' => 2],
            ['type' => 'pih', 'pid' => 8, 'house' => 11, 'text' => '常常陷入令自己迷茫的社交圈中，到底谁才是对我好的呀？', 'sort' => 2],
            ['type' => 'pih', 'pid' => 4, 'house' => 11, 'text' => '情绪不自控，怎么总有“刁民想害朕”！', 'sort' => 3],
            ['type' => 'pih', 'pid' => 1, 'house' => 11, 'text' => '感情用事，过度依赖他人。', 'sort' => 4],
            ['type' => 'pih', 'pid' => 0, 'house' => 11, 'text' => '有时是最强C位，有时是朋友圈中的显眼包。', 'sort' => 5],
            ['type' => 'pih', 'pid' => 2, 'house' => 11, 'text' => '爱八卦，但把握不好度就容易惹“祸”上身。', 'sort' => 5],
            ['type' => 'pih', 'pid' => 5, 'house' => 11, 'text' => '过度仗义，我的良苦用心为为什么总是容易被人误会。', 'sort' => 6],
        ];
        $res['side_effect'][] = [
            'name' => '友情',
            'text' => $this->getLogicText($astroData, $sideEffectText3),
        ];
        // 副作用 - 爱情 参考盘主金星落座、5宫宫内部分行星、7宫宫内部分行星
        $sideEffectText4 = [
            // 金星落座  排序数字越小，优先级越高
            ['type' => 'pis', 'pid' => 3, 'sign' => 1, 'text' => '爱情来的就像龙卷风，走的也像龙卷风', 'sort' => 5],
            ['type' => 'pis', 'pid' => 3, 'sign' => 2, 'text' => '超慢热的老火锅，肉都变质了才沸腾', 'sort' => 5],
            ['type' => 'pis', 'pid' => 3, 'sign' => 3, 'text' => '太需要新鲜感，熟悉了就觉得没意思', 'sort' => 5],
            ['type' => 'pis', 'pid' => 3, 'sign' => 4, 'text' => '黏人敏感像块胶，情感剧场常驻嘉宾。', 'sort' => 5],
            ['type' => 'pis', 'pid' => 3, 'sign' => 5, 'text' => '不听我的那一定是不爱我了', 'sort' => 5],
            ['type' => 'pis', 'pid' => 3, 'sign' => 6, 'text' => '你准备好接受细节大拷问了吗？', 'sort' => 5],
            ['type' => 'pis', 'pid' => 3, 'sign' => 7, 'text' => '到底行不行啊，给句痛快话吧！', 'sort' => 5],
            ['type' => 'pis', 'pid' => 3, 'sign' => 8, 'text' => '总是觉得有人在骗我！', 'sort' => 5],
            ['type' => 'pis', 'pid' => 3, 'sign' => 9, 'text' => '剑走偏锋，我就喜欢挑战不可能', 'sort' => 5],
            ['type' => 'pis', 'pid' => 3, 'sign' => 10, 'text' => '感情升温全靠耐心磨，急性子表示伤不起！', 'sort' => 5],
            ['type' => 'pis', 'pid' => 3, 'sign' => 11, 'text' => '想要深度绑定？抱歉，我是自由的行星。', 'sort' => 5],
            ['type' => 'pis', 'pid' => 3, 'sign' => 12, 'text' => '浪漫界头号戏精，恋爱比追剧还上头！', 'sort' => 5],
            // 5宫宫内部分行星  排序数字越小，优先级越高
            ['type' => 'pih', 'pid' => 7, 'house' => 5, 'text' => '经常不按常理出牌，想法就像开盲盒。', 'sort' => 1],
            ['type' => 'pih', 'pid' => 8, 'house' => 5, 'text' => '暧昧制造机，让人摸不着头脑。', 'sort' => 1],
            ['type' => 'pih', 'pid' => 9, 'house' => 5, 'text' => '一旦坠入爱河，狗血虐恋根本不停', 'sort' => 1],
            ['type' => 'pih', 'pid' => 6, 'house' => 5, 'text' => '我可以和你谈恋爱，但是请守我的“规矩”。', 'sort' => 2],
            ['type' => 'pih', 'pid' => 1, 'house' => 5, 'text' => '比天气还难捉摸，根本捉摸不透！', 'sort' => 3],
            ['type' => 'pih', 'pid' => 4, 'house' => 5, 'text' => '闪电式恋爱闪电式分手闪电式遇新欢', 'sort' => 3],
            ['type' => 'pih', 'pid' => 0, 'house' => 5, 'text' => '永远自带光环，除了耀眼就没别的标签了。', 'sort' => 4],
            ['type' => 'pih', 'pid' => 3, 'house' => 5, 'text' => '总是陷入复杂的爱情局面', 'sort' => 4],
            ['type' => 'pih', 'pid' => 5, 'house' => 5, 'text' => '心大得像草原，啥事儿都不往心上放。', 'sort' => 4],
            // 7宫宫内部分行星  排序数字越小，优先级越高
            ['type' => 'pih', 'pid' => 7, 'house' => 7, 'text' => '总有外界突然的变故，影响我的感情', 'sort' => 1],
            ['type' => 'pih', 'pid' => 8, 'house' => 7, 'text' => '界限感模糊，总是朋友变情人', 'sort' => 1],
            ['type' => 'pih', 'pid' => 9, 'house' => 7, 'text' => '感情真是令我上头，又怕又想尝。', 'sort' => 1],
            ['type' => 'pih', 'pid' => 6, 'house' => 7, 'text' => '不管你是谁，都要保持好社交距离，否则我会有压力！', 'sort' => 2],
            ['type' => 'pih', 'pid' => 1, 'house' => 7, 'text' => '敏感到恨不得知道Ta的所有行程！', 'sort' => 3],
            ['type' => 'pih', 'pid' => 4, 'house' => 7, 'text' => '关系越近，脾气就越容易暴躁', 'sort' => 3],
        ];
        $res['side_effect'][] = [
            'name' => '爱情',
            'text' => $this->getLogicText($astroData, $sideEffectText4),
        ];

        // 不可预测的反应（怪癖）
        $res['oddity'] = [];
        // 太阳和月亮的结合落座 72种
        $sunMoonSign = $astroData['planets'][0]['in_sign_id'] . '-' . $astroData['planets'][1]['in_sign_id'];
        switch ($sunMoonSign)
        {
            case '1-3':
            case '1-7':
            case '1-11':
                // 日白羊月风象（双子、天秤、水瓶）     你说你的，我做我的
                $res['oddity'][] = '你说你的，我做我的';
                break;
            case '1-2':
            case '1-6':
            case '1-10':
                // 日白羊月火象（白羊、狮子、射手）     内心火药桶，一点就炸！
                $res['oddity'][] = '内心火药桶，一点就炸！';
                break;
            case '1-1':
            case '1-5':
            case '1-9':
                // 日白羊月土象（金牛、处女、摩羯）     就喜欢看你讨厌又干不掉我的样子
                $res['oddity'][] = '就喜欢看你讨厌又干不掉我的样子';
                break;
            case '1-12':
                // 日白羊月双鱼       上一秒嘻嘻，下一秒不嘻嘻
                $res['oddity'][] = '上一秒嘻嘻，下一秒不嘻嘻';
                break;
            case '1-4':
                // 日白羊月巨蟹       如果Ta能保护我，那我一定对Ta超崇拜！
                $res['oddity'][] = '如果Ta能保护我，那我一定对Ta超崇拜！';
                break;
            case '1-8':
                // 日白羊月天蝎       表面你以为我是小白兔，其实内心我是大灰狼！
                $res['oddity'][] = '表面你以为我是小白兔，其实内心我是大灰狼！';
                break;

            case '2-3':
            case '2-7':
            case '2-11':
                // 日金牛月风象（双子、天秤、水瓶）     喜欢装不懂，看透不说破。
                $res['oddity'][] = '喜欢装不懂，看透不说破。';
                break;
            case '2-2':
            case '2-6':
            case '2-10':
                // 日金牛月土象（金牛、处女、摩羯）     你能给我什么价值？我不做任何没有意义的事情。
                $res['oddity'][] = '你能给我什么价值？我不做任何没有意义的事情。';
                break;
            case '2-1':
            case '2-5':
            case '2-9':
                // 日金牛月火象（白羊、狮子、射手）     表面无所谓，内心很在乎！
                $res['oddity'][] = '表面无所谓，内心很在乎！';
                break;
            case '2-12':
                // 日金牛月双鱼       其实很会拿捏人际关系，只是有时候懒得拿捏。
                $res['oddity'][] = '其实很会拿捏人际关系，只是有时候懒得拿捏。';
                break;
            case '2-4':
                // 日金牛月巨蟹       表面霸总，内心卡哇伊，遇到可爱的东西就走不动道儿
                $res['oddity'][] = '表面霸总，内心卡哇伊，遇到可爱的东西就走不动道儿';
                break;
            case '2-8':
                // 日金牛月天蝎       惹过我的人，我都用小本本记下来了！
                $res['oddity'][] = '惹过我的人，我都用小本本记下来了！';
                break;

            case '3-3':
            case '3-7':
            case '3-11':
                // 日双子月风象（双子、天秤、水瓶）     喜欢“捉弄”别人。
                $res['oddity'][] = '喜欢“捉弄”别人。';
                break;
            case '3-2':
            case '3-6':
            case '3-10':
                // 日双子月土象（金牛、处女、摩羯）     不想做自己觉得没意义的事
                $res['oddity'][] = '不想做自己觉得没意义的事';
                break;
            case '3-1':
            case '3-5':
            case '3-9':
                // 日双子月火象（白羊、狮子、射手）     哪儿有八卦就往哪儿冲！
                $res['oddity'][] = '哪儿有八卦就往哪儿冲！';
                break;
            case '3-12':
                // 日双子月双鱼       好想让每个人都能懂我！
                $res['oddity'][] = '好想让每个人都能懂我！';
                break;
            case '3-4':
                // 日双子月巨蟹       所有人的小秘密都逃不过我的法眼。
                $res['oddity'][] = '所有人的小秘密都逃不过我的法眼。';
                break;
            case '3-8':
                // 日双子月天蝎       想整人，别人可玩不过我。
                $res['oddity'][] = '想整人，别人可玩不过我。';
                break;

            case '4-3':
            case '4-7':
            case '4-11':
                // 日巨蟹月风象（双子、天秤、水瓶）     选择困难症？这锅我不背也得背！
                $res['oddity'][] = '选择困难症？这锅我不背也得背！';
                break;
            case '4-2':
            case '4-6':
            case '4-10':
                // 日巨蟹月土象（金牛、处女、摩羯）     不想那些人生大理想，只想安安稳稳过我的小生活
                $res['oddity'][] = '不想那些人生大理想，只想安安稳稳过我的小生活';
                break;
            case '4-1':
            case '4-5':
            case '4-9':
                // 日巨蟹月火象（白羊、狮子、射手）     上一秒温柔似水，下一秒直接炸毛！
                $res['oddity'][] = '上一秒温柔似水，下一秒直接炸毛！';
                break;
            case '4-12':
                // 日巨蟹月双鱼       逃避现实小能手，就喜欢活在梦里
                $res['oddity'][] = '逃避现实小能手，就喜欢活在梦里';
                break;
            case '4-4':
                // 日巨蟹月巨蟹       天下第一圣母，“坏人”都能同情
                $res['oddity'][] = '天下第一圣母，“坏人”都能同情';
                break;
            case '4-8':
                // 日巨蟹月天蝎       宁愿自损一千，也要伤敌八百
                $res['oddity'][] = '宁愿自损一千，也要伤敌八百';
                break;

            case '5-3':
            case '5-7':
            case '5-11':
                // 日狮子月风象（双子、天秤、水瓶）     我有我自己的节奏
                $res['oddity'][] = '我有我自己的节奏';
                break;
            case '5-2':
            case '5-6':
            case '5-10':
                // 日狮子月土象（金牛、处女、摩羯）     我可以有不好，但是你别说我
                $res['oddity'][] = '我可以有不好，但是你别说我';
                break;
            case '5-1':
            case '5-5':
            case '5-9':
                // 日狮子月火象（白羊、狮子、射手）     冲劲儿一上来，九头牛都拉不回来。
                $res['oddity'][] = '冲劲儿一上来，九头牛都拉不回来。';
                break;
            case '5-12':
                // 日狮子月双鱼       够我走，有肉吃，就爱认小弟！
                $res['oddity'][] = '够我走，有肉吃，就爱认小弟！';
                break;
            case '5-4':
                // 日狮子月巨蟹       最大的愿望，一家之主！
                $res['oddity'][] = '最大的愿望，一家之主！';
                break;
            case '5-8':
                // 日狮子月天蝎       我相信，我有蔑视一切的资本
                $res['oddity'][] = '我相信，我有蔑视一切的资本';
                break;

            case '6-3':
            case '6-7':
            case '6-11':
                // 日处女月风象（双子、天秤、水瓶）     我有很多创意点，但我才不会全都告诉你
                $res['oddity'][] = '我有很多创意点，但我才不会全都告诉你';
                break;
            case '6-2':
            case '6-6':
            case '6-10':
                // 日处女月土象（金牛、处女、摩羯）     三思而后行典范，稳得一批！
                $res['oddity'][] = '三思而后行典范，稳得一批！';
                break;
            case '6-1':
            case '6-5':
            case '6-9':
                // 日处女月火象（白羊、狮子、射手）     计划赶不上变化？不存在的！
                $res['oddity'][] = '计划赶不上变化？不存在的！';
                break;
            case '6-12':
                // 日处女月双鱼       理性真的只是我感性的保护色
                $res['oddity'][] = '理性真的只是我感性的保护色';
                break;
            case '6-4':
                // 日处女月巨蟹       袜子颜色，都得按色系排列。
                $res['oddity'][] = '袜子颜色，都得按色系排列。';
                break;
            case '6-8':
                // 日处女月天蝎       话题一旦开启，就是没有硝烟的辩论赛。
                $res['oddity'][] = '话题一旦开启，就是没有硝烟的辩论赛。';
                break;

            case '7-3':
            case '7-7':
            case '7-11':
                // 日天秤月风象（双子、天秤、水瓶）     纠结善变，思绪如风飘荡不落地
                $res['oddity'][] = '纠结善变，思绪如风飘荡不落地';
                break;
            case '7-2':
            case '7-6':
            case '7-10':
                // 日天秤月土象（金牛、处女、摩羯）     说人情也要说利益
                $res['oddity'][] = '说人情也要说利益';
                break;
            case '7-1':
            case '7-5':
            case '7-9':
                // 日天秤月火象（白羊、狮子、射手）     看起来优雅，心里疯得很
                $res['oddity'][] = '看起来优雅，心里疯得很';
                break;
            case '7-12':
                // 日天秤月双鱼       外表的好好先生/小姐，内心嘤嘤怪
                $res['oddity'][] = '外表的好好先生/小姐，内心嘤嘤怪';
                break;
            case '7-4':
                // 日天秤月巨蟹       投入感情就没底线
                $res['oddity'][] = '投入感情就没底线';
                break;
            case '7-8':
                // 日天秤月天蝎       内心的激烈翻涌不轻易为任何人所见
                $res['oddity'][] = '内心的激烈翻涌不轻易为任何人所见';
                break;

            case '8-3':
            case '8-7':
            case '8-11':
                // 日天蝎月风象（双子、天秤、水瓶）     看起来爱的深刻，其实心里门清
                $res['oddity'][] = '看起来爱的深刻，其实心里门清';
                break;
            case '8-2':
            case '8-6':
            case '8-10':
                // 日天蝎月土象（金牛、处女、摩羯）     物质和深情我全要
                $res['oddity'][] = '物质和深情我全要';
                break;
            case '8-1':
            case '8-5':
            case '8-9':
                // 日天蝎月火象（白羊、狮子、射手）     疯批宝宝，想要的都要得到
                $res['oddity'][] = '疯批宝宝，想要的都要得到';
                break;
            case '8-12':
                // 日天蝎月双鱼       绝佳的感知力，不用别人说就什么都知道
                $res['oddity'][] = '绝佳的感知力，不用别人说就什么都知道';
                break;
            case '8-4':
                // 日天蝎月巨蟹       看起来谁都惹不起，其实内心是温暖的港湾
                $res['oddity'][] = '看起来谁都惹不起，其实内心是温暖的港湾';
                break;
            case '8-8':
                // 日天蝎月天蝎       神秘的黑暗王者，谁敢惹我？
                $res['oddity'][] = '神秘的黑暗王者，谁敢惹我？';
                break;

            case '9-3':
            case '9-7':
            case '9-11':
                // 日射手月风象（双子、天秤、水瓶）     快乐的游侠，谁也抓不住我
                $res['oddity'][] = '快乐的游侠，谁也抓不住我';
                break;
            case '9-2':
            case '9-6':
            case '9-10':
                // 日射手月土象（金牛、处女、摩羯）     坚定远行的骑士，但也会权衡利弊
                $res['oddity'][] = '坚定远行的骑士，但也会权衡利弊';
                break;
            case '9-1':
            case '9-5':
            case '9-9':
                // 日射手月火象（白羊、狮子、射手）     是燃烧自我的冒险者，也是哈士奇宝宝本人
                $res['oddity'][] = '是燃烧自我的冒险者，也是哈士奇宝宝本人';
                break;
            case '9-12':
                // 日射手月双鱼       在梦幻和现实之间游走，自己也分不清哪里是哪里
                $res['oddity'][] = '在梦幻和现实之间游走，自己也分不清哪里是哪里';
                break;
            case '9-4':
                // 日射手月巨蟹       是爱的守护者，也是高需求宝宝
                $res['oddity'][] = '是爱的守护者，也是高需求宝宝';
                break;
            case '9-8':
                // 日射手月天蝎       乐观的猎人，但我想的可不会轻易告诉你
                $res['oddity'][] = '乐观的猎人，但我想的可不会轻易告诉你';
                break;

            case '10-3':
            case '10-7':
            case '10-11':
                // 日摩羯月风象（双子、天秤、水瓶）     看着我好像运筹帷幄，实则心早已在外太空
                $res['oddity'][] = '看着我好像运筹帷幄，实则心早已在外太空';
                break;
            case '10-2':
            case '10-6':
            case '10-10':
                // 日摩羯月土象（金牛、处女、摩羯）     都行，可以，没关系
                $res['oddity'][] = '都行，可以，没关系';
                break;
            case '10-1':
            case '10-5':
            case '10-9':
                // 日摩羯月火象（白羊、狮子、射手）     我，外表稳重，内心疯批
                $res['oddity'][] = '我，外表稳重，内心疯批';
                break;
            case '10-12':
                // 日摩羯月双鱼       隐忍只是我的保护色
                $res['oddity'][] = '隐忍只是我的保护色';
                break;
            case '10-4':
                // 日摩羯月巨蟹       爱要怎么说出口
                $res['oddity'][] = '爱要怎么说出口';
                break;
            case '10-8':
                // 日摩羯月天蝎       高需求宝宝，吃软不吃硬
                $res['oddity'][] = '高需求宝宝，吃软不吃硬';
                break;

            case '11-3':
            case '11-7':
            case '11-11':
                // 日水瓶月风象（双子、天秤、水瓶）     请不要随意挑战挑战人间最强大脑
                $res['oddity'][] = '请不要随意挑战挑战人间最强大脑';
                break;
            case '11-2':
            case '11-6':
            case '11-10':
                // 日水瓶月土象（金牛、处女、摩羯）     脚踏实地的追风少年在此
                $res['oddity'][] = '脚踏实地的追风少年在此';
                break;
            case '11-1':
            case '11-5':
            case '11-9':
                // 日水瓶月火象（白羊、狮子、射手）     玩的就是心跳！
                $res['oddity'][] = '玩的就是心跳！';
                break;
            case '11-12':
                // 日水瓶月双鱼       理性与感性兼具的人间精品
                $res['oddity'][] = '理性与感性兼具的人间精品';
                break;
            case '11-4':
                // 日水瓶月巨蟹       讨厌被全世界束缚，除了你
                $res['oddity'][] = '讨厌被全世界束缚，除了你';
                break;
            case '11-8':
                // 日水瓶月天蝎       请不要欺骗我，真人版柯南已上线
                $res['oddity'][] = '请不要欺骗我，真人版柯南已上线';
                break;

            case '12-3':
            case '12-7':
            case '12-11':
                // 日双鱼月风象（双子、天秤、水瓶）     双商在线的种子号选手
                $res['oddity'][] = '双商在线的种子号选手';
                break;
            case '12-2':
            case '12-6':
            case '12-10':
                // 日双鱼月土象（金牛、处女、摩羯）     你以为我在和你玩感性，其实我很理性！
                $res['oddity'][] = '你以为我在和你玩感性，其实我很理性！';
                break;
            case '12-1':
            case '12-5':
            case '12-9':
                // 日双鱼月火象（白羊、狮子、射手）     我的脚步想要去流浪，我的心却想靠航
                $res['oddity'][] = '我的脚步想要去流浪，我的心却想靠航';
                break;
            case '12-12':
                // 日双鱼月双鱼       能共情全世界，唯独理不清自己的心
                $res['oddity'][] = '能共情全世界，唯独理不清自己的心';
                break;
            case '12-4':
                // 日双鱼月巨蟹       多愁善感情绪化，分分钟哭给你看
                $res['oddity'][] = '多愁善感情绪化，分分钟哭给你看';
                break;
            case '12-8':
                // 日双鱼月天蝎       表面都行都可以，内心悄悄记仇
                $res['oddity'][] = '表面都行都可以，内心悄悄记仇';
                break;
        }

        // 冥王落宫 12种
        $inHouseTextList = [
            1 => '总是饶不了过去的自己',
            2 => '可以和我聊感情聊关系，但是你别碰我的利益！',
            3 => '我会想尽办法引导你说出我想要的答案',
            4 => '内心住着小恶魔，好在不会轻易爆发。',
            5 => '情感“受虐”体质，不够虐的我不爱！',
            6 => '喜欢“疼痛感”，无论是生理还是心理上的。',
            7 => '就喜欢和人玩心理战',
            8 => '总感觉这个世界是假的！',
            9 => '话题从哲学到宗教，从宇宙起源到人类未来。',
            10 => '擅长逆风翻盘，浴火重生，就喜欢玩心跳！',
            11 => '不好惹本人，翻脸比翻书还快',
            12 => '世上最疯的疯批，在此',
        ];
        $res['oddity'][] = $inHouseTextList[$astroData['planets'][9]['in_house_id']];
        // 相位、宫内行星 22种
        // 月冥负相（90、180）		1   为什么我难过的时候你不跟着难过？
        // 金冥负相（90、180）		1   无虐不爱，受“虐”倾向
        // 月亮8宫		        1   人性的黑暗面早被我看透了！
        // 月亮12宫		        1   我什么时候才能逃离地球呢？
        // 火星8宫		        1   警告各位，真的别惹我
        // 土星1宫		        1   总觉得自己不够好，我是世界上的一粒尘埃
        // 土星12宫		        1   太轻松得到的东西真是没意思。
        // 海王12宫		        1   当一个npc真的蛮好的！
        // 日火负相（90、180）		2   脑子里常常都在和人打架
        // 日冥负相（90、180）		2   掌控欲超强，不撞南墙不回头
        // 水冥负相（90、180）		2   我不信！我不信！我都不信！
        // 火冥负相（90、180）		2   我真的很凶，不要惹我
        // 土星8宫		        2   无欲无求，爱咋咋地，都行
        // 天王1宫		        2   我要想办法让别感觉我又变得不一样了！
        // 月海负相（90、180）		3   爱哭鬼，别人越劝哭的越凶
        // 水海负相（90、180）		3   说点善意的小谎言，这不过分吧？
        // 金天负相（90、180）		3   感情中就喜欢新鲜感，给我来点刺激！
        // 火天负相（90、180）		3   我想做啥看心情，不要约束我
        // 火海负相（90、180）		3   喜欢尝试小众的事情
        // 月木负相（90、180）		4   一点小事儿就喜欢在内心不断放大
        // 月土负相（90、180）		4   哪怕周围再多人，我也觉得我好孤独
        // 水木负相（90、180）		4   彩虹p高手，反正话我说了，管你信不信
        $oddityText = [
            ['type' => 'php', 'pid' => 1, 'phase' => [90, 180], 'pid2' => 9, 'text' => '为什么我难过的时候你不跟着难过？', 'sort' => 1],
            ['type' => 'php', 'pid' => 3, 'phase' => [90, 180], 'pid2' => 9, 'text' => '无虐不爱，受“虐”倾向', 'sort' => 1],
            ['type' => 'pih', 'pid' => 1, 'house' => 8, 'text' => '人性的黑暗面早被我看透了！', 'sort' => 1],
            ['type' => 'pih', 'pid' => 1, 'house' => 12, 'text' => '我什么时候才能逃离地球呢？', 'sort' => 1],
            ['type' => 'pih', 'pid' => 4, 'house' => 8, 'text' => '警告各位，真的别惹我', 'sort' => 1],
            ['type' => 'pih', 'pid' => 6, 'house' => 1, 'text' => '总觉得自己不够好，我是世界上的一粒尘埃', 'sort' => 1],
            ['type' => 'pih', 'pid' => 6, 'house' => 12, 'text' => '太轻松得到的东西真是没意思。', 'sort' => 1],
            ['type' => 'pih', 'pid' => 8, 'house' => 12, 'text' => '当一个npc真的蛮好的！', 'sort' => 1],
            ['type' => 'php', 'pid' => 0, 'phase' => [90, 180], 'pid2' => 4, 'text' => '脑子里常常都在和人打架', 'sort' => 2],
            ['type' => 'php', 'pid' => 0, 'phase' => [90, 180], 'pid2' => 9, 'text' => '掌控欲超强，不撞南墙不回头', 'sort' => 2],
            ['type' => 'php', 'pid' => 2, 'phase' => [90, 180], 'pid2' => 9, 'text' => '我不信！我不信！我都不信！', 'sort' => 2],
            ['type' => 'php', 'pid' => 4, 'phase' => [90, 180], 'pid2' => 9, 'text' => '我真的很凶，不要惹我', 'sort' => 2],
            ['type' => 'pih', 'pid' => 6, 'house' => 8, 'text' => '无欲无求，爱咋咋地，都行', 'sort' => 2],
            ['type' => 'pih', 'pid' => 7, 'house' => 1, 'text' => '我要想办法让别感觉我又变得不一样了！', 'sort' => 2],
            ['type' => 'php', 'pid' => 1, 'phase' => [90, 180], 'pid2' => 8, 'text' => '爱哭鬼，别人越劝哭的越凶', 'sort' => 3],
            ['type' => 'php', 'pid' => 2, 'phase' => [90, 180], 'pid2' => 8, 'text' => '说点善意的小谎言，这不过分吧？', 'sort' => 3],
            ['type' => 'php', 'pid' => 3, 'phase' => [90, 180], 'pid2' => 7, 'text' => '感情中就喜欢新鲜感，给我来点刺激！', 'sort' => 3],
            ['type' => 'php', 'pid' => 4, 'phase' => [90, 180], 'pid2' => 7, 'text' => '我想做啥看心情，不要约束我', 'sort' => 3],
            ['type' => 'php', 'pid' => 4, 'phase' => [90, 180], 'pid2' => 8, 'text' => '喜欢尝试小众的事情', 'sort' => 3],
            ['type' => 'php', 'pid' => 1, 'phase' => [90, 180], 'pid2' => 5, 'text' => '一点小事儿就喜欢在内心不断放大', 'sort' => 4],
            ['type' => 'php', 'pid' => 1, 'phase' => [90, 180], 'pid2' => 6, 'text' => '哪怕周围再多人，我也觉得我好孤独', 'sort' => 4],
            ['type' => 'php', 'pid' => 2, 'phase' => [90, 180], 'pid2' => 5, 'text' => '彩虹p高手，反正话我说了，管你信不信', 'sort' => 4],
        ];
        $oddity3 = $this->getLogicText($astroData, $oddityText);
        if ($oddity3)
        {
            $res['oddity'][] = $oddity3;
        }

        return $res;
    }

    /**
     * 获取逻辑词条（排序优先级为从小到大）
     * @param array $astroData 星盘信息
     * @param array $textList 词条和逻辑相关信息
     * @return string
     */
    private function getLogicText($astroData, $textList): string
    {
        if (!empty($astroData) && !empty($textList))
        {
            $res = [];
            $sort = 10;
            $textList = resort($textList, 'sort', 'ASC');
            foreach ($textList as $k1 => $v1)
            {
                switch ($v1['type'])
                {
                    case 'pis':
                        // 行星落座 pid sign
                        if ($v1['sort'] <= $sort
                            && $astroData['planets'][$v1['pid']]['in_sign_id'] === $v1['sign'])
                        {
                            if ($v1['sort'] < $sort)
                            {
                                $res = [];
                            }
                            $sort = $v1['sort'];
                            $res[] = $v1['text'];
                        }
                        break;
                    case 'pih':
                        // 行星落宫 pid house
                        if ($v1['sort'] <= $sort
                            && $astroData['planets'][$v1['pid']]['in_house_id'] === $v1['house'])
                        {
                            if ($v1['sort'] < $sort)
                            {
                                $res = [];
                            }
                            $sort = $v1['sort'];
                            $res[] = $v1['text'];
                        }
                        break;
                    case 'his':
                        // 宫头落座 house  sign
                        if ($v1['sort'] <= $sort
                            && $astroData['houses'][$v1['house']]['in_sign_id'] === $v1['sign'])
                        {
                            if ($v1['sort'] < $sort)
                            {
                                $res = [];
                            }
                            $sort = $v1['sort'];
                            $res[] = $v1['text'];
                        }
                        break;
                    case 'php':
                        // 行星相位 pid phase pid2
                        $key = $v1['pid'] . '-' . $v1['pid2'];
                        if ($v1['sort'] <= $sort
                            && isset($astroData['planets'][$v1['pid']]['phase'][$key])
                            && in_array($astroData['planets'][$v1['pid']]['phase'][$key]['phase_e'], $v1['phase'], false))
                        {
                            if ($v1['sort'] < $sort)
                            {
                                $res = [];
                            }
                            $sort = $v1['sort'];
                            $res[] = $v1['text'];
                        }
                        break;
                }
            }
            if (!empty($res))
            {
                return $res[array_rand($res)];
            }
        }
        return '';
    }
}
